A computer system includes a set of interconnected components or modules of three basic types: central processing unit (CPU), memory, and input/output (I/O). The modules of the computer system are connected together by communication pathways known as busses. A bus is a shared transmission medium in that plural computer modules can transmit across the same bus. However, if two modules transmit during the same time period, their signals will overlap and become garbled. Therefore, it is important to ensure that only one module transmits across the bus during a given time period.
The process of allocating time or bandwidth on a computer bus among plural bus requesters is known as arbitration. Typically, an arbiter grants access for a predetermined time period or bandwidth window to whichever bus requester first requests use of the bus. If plural bus requesters have requests for use of the bus pending, then the arbiter typically employs a rotational priority scheme to share the bus among the bus requesters. In a rotational priority scheme, the use of the bus is given for one bandwidth window to each bus requester in sequential order. Thus, the rotational priority scheme gives each bus requester the same amount of bus time as every other bus requester connected to the bus.
Although the rotational priority scheme might seem to be an optimal allocation of the bus, it has drawbacks. In particular, each bus requester is given the same amount of time to use the bus regardless of the processing speeds of the bus requesters. When the bus saturates, the highest bandwidth bus requester will be slowed down before the lower bandwidth bus requesters are affected. For example, assume the bus is running at 300 megabytes per second (MB/s), requesters A and B are each running at 100 MB/s, and requester C is running at 200 MB/s. The bus is saturated because the total bandwidth of the requesters (400 MB/s) is greater than the bandwidth of the bus (300 MB/s). Under the rotational priority scheme, requesters A and B each will continue to run at 100 megabytes per second while the high bandwidth requester C will be slowed to 100 megabytes per second. Thus, upon bus saturation the rotational priority scheme allocates the available bus bandwidth by slowing down higher bandwidth bus requesters before slowing down lower bandwidth bus requesters. Moreover, even if the bus is so saturated that the lower bandwidth bus requesters need to be slowed down, the lower bandwidth requesters are not slowed down as much as the higher bandwidth requesters.